<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 私有成员 ：类的内部可以使用 ，外部不能使用
        // ES5 :模拟私有成员

        // function Person(name,age){
        //     let _weight = "100kg";
        //     // console.log(_weight)
        //     this.name = name;
        //     this.age = age;
        // }

        // let zhangsan = new Person("张安",20);
        // console.log(zhangsan.name);
        // console.log(zhangsan.age);
        // console.log(zhangsan._weight);
        // __proto__

        // console.log({name:"张三"});
    //     var obj = {
    //         name:"张三"
    //     }
    //     // obj.__proto__.myage = 20;
    //     // 获取对象的原型
    //  console.log(Object.getPrototypeOf(obj));

    // //  设置对象的原型；
    //  Object.setPrototypeOf(obj,{myage:20});
    //  console.log(obj);


    // ES6 :私有成员 通过 # 修饰 。 私有属性 和 私有方法；

    // class Person{
    //     // name = "张三";  // 设置属性 方式二
    //     #weight="100kg";  // 私有属性
    //     constructor(name){
    //         // this.name = "张三";  // 方式一
    //         this.name = name;
    //         this.age = 20;
    //     }
    //     getWeight(){  // 公有方法 ： 公有方法调用私有属性或者方法
    //         return this.#weight;
    //     }
    //     #fn(){ // 私有方法
    //         console.log("公有方法");
    //     }
    // }

    // let zhangsan = new Person("张三");
    // console.log(zhangsan);
    // // console.log(zhangsan.name);
    // // console.log(zhangsan.#weight);  //外部不能调用私有成员
    // // zhangsan.#fn();
    // console.log(zhangsan.getWeight());




    // ES6类里的属性设置 ；
    class Person{
        age = 20;  // 方式二 
        constructor(){
            this.name = "张三"; // 方式一
            this.myheight = "178cm"
        }
        // 方式三 通过 get 和set 设置属性
        get height(){
            console.log("get执行了")
            return this.myheight;
        }
        set height(newvalue){
            console.log("设置的新值是",newvalue);
            this.myheight = newvalue;
        }
    }

    let zhangsan = new Person();
    console.log(zhangsan);


    </script>
</body>
</html>